#ifndef BLAS_H
#define BLAS_H

#define BLASFUNC(FUNC) FUNC##_

#ifdef __WIN64__
typedef long long BLASLONG;
typedef unsigned long long BLASULONG;
#else
typedef long BLASLONG;
typedef unsigned long BLASULONG;
#endif

int BLASFUNC(xerbla)(const char*, int* info, int);

float BLASFUNC(sdot)(int*, float*, int*, float*, int*);
float BLASFUNC(sdsdot)(int*, float*, float*, int*, float*, int*);

double BLASFUNC(dsdot)(int*, float*, int*, float*, int*);
double BLASFUNC(ddot)(int*, double*, int*, double*, int*);
double BLASFUNC(qdot)(int*, double*, int*, double*, int*);

#if defined(F_INTERFACE_GFORT) && !defined(__64BIT__)
int BLASFUNC(cdotu)(int*, float*, int*, float*, int*);
int BLASFUNC(cdotc)(int*, float*, int*, float*, int*);
void BLASFUNC(zdotu)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(zdotc)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(xdotu)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(xdotc)(double*, int*, double*, int*, double*, int*);
#elif defined(F_INTERFACE_F2C) || defined(F_INTERFACE_PGI) || defined(F_INTERFACE_GFORT) ||                            \
	(defined(F_INTERFACE_PATHSCALE) && defined(__64BIT__))
void BLASFUNC(cdotu)(float*, int*, float*, int*, float*, int*);
void BLASFUNC(cdotc)(float*, int*, float*, int*, float*, int*);
void BLASFUNC(zdotu)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(zdotc)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(xdotu)(double*, int*, double*, int*, double*, int*);
void BLASFUNC(xdotc)(double*, int*, double*, int*, double*, int*);
#else
std::complex<float> BLASFUNC(cdotu)(int*, float*, int*, float*, int*);
std::complex<float> BLASFUNC(cdotc)(int*, float*, int*, float*, int*);
std::complex<double> BLASFUNC(zdotu)(int*, double*, int*, double*, int*);
std::complex<double> BLASFUNC(zdotc)(int*, double*, int*, double*, int*);
double BLASFUNC(xdotu)(int*, double*, int*, double*, int*);
double BLASFUNC(xdotc)(int*, double*, int*, double*, int*);
#endif

int BLASFUNC(cdotuw)(int*, float*, int*, float*, int*, float*);
int BLASFUNC(cdotcw)(int*, float*, int*, float*, int*, float*);
int BLASFUNC(zdotuw)(int*, double*, int*, double*, int*, double*);
int BLASFUNC(zdotcw)(int*, double*, int*, double*, int*, double*);

int BLASFUNC(saxpy)(int*, float*, float*, int*, float*, int*);
int BLASFUNC(daxpy)(int*, double*, double*, int*, double*, int*);
int BLASFUNC(qaxpy)(int*, double*, double*, int*, double*, int*);
int BLASFUNC(caxpy)(int*, float*, float*, int*, float*, int*);
int BLASFUNC(zaxpy)(int*, double*, double*, int*, double*, int*);
int BLASFUNC(xaxpy)(int*, double*, double*, int*, double*, int*);
int BLASFUNC(caxpyc)(int*, float*, float*, int*, float*, int*);
int BLASFUNC(zaxpyc)(int*, double*, double*, int*, double*, int*);
int BLASFUNC(xaxpyc)(int*, double*, double*, int*, double*, int*);

int BLASFUNC(scopy)(int*, float*, int*, float*, int*);
int BLASFUNC(dcopy)(int*, double*, int*, double*, int*);
int BLASFUNC(qcopy)(int*, double*, int*, double*, int*);
int BLASFUNC(ccopy)(int*, float*, int*, float*, int*);
int BLASFUNC(zcopy)(int*, double*, int*, double*, int*);
int BLASFUNC(xcopy)(int*, double*, int*, double*, int*);

int BLASFUNC(sswap)(int*, float*, int*, float*, int*);
int BLASFUNC(dswap)(int*, double*, int*, double*, int*);
int BLASFUNC(qswap)(int*, double*, int*, double*, int*);
int BLASFUNC(cswap)(int*, float*, int*, float*, int*);
int BLASFUNC(zswap)(int*, double*, int*, double*, int*);
int BLASFUNC(xswap)(int*, double*, int*, double*, int*);

float BLASFUNC(sasum)(int*, float*, int*);
float BLASFUNC(scasum)(int*, float*, int*);
double BLASFUNC(dasum)(int*, double*, int*);
double BLASFUNC(qasum)(int*, double*, int*);
double BLASFUNC(dzasum)(int*, double*, int*);
double BLASFUNC(qxasum)(int*, double*, int*);

int BLASFUNC(isamax)(int*, float*, int*);
int BLASFUNC(idamax)(int*, double*, int*);
int BLASFUNC(iqamax)(int*, double*, int*);
int BLASFUNC(icamax)(int*, float*, int*);
int BLASFUNC(izamax)(int*, double*, int*);
int BLASFUNC(ixamax)(int*, double*, int*);

int BLASFUNC(ismax)(int*, float*, int*);
int BLASFUNC(idmax)(int*, double*, int*);
int BLASFUNC(iqmax)(int*, double*, int*);
int BLASFUNC(icmax)(int*, float*, int*);
int BLASFUNC(izmax)(int*, double*, int*);
int BLASFUNC(ixmax)(int*, double*, int*);

int BLASFUNC(isamin)(int*, float*, int*);
int BLASFUNC(idamin)(int*, double*, int*);
int BLASFUNC(iqamin)(int*, double*, int*);
int BLASFUNC(icamin)(int*, float*, int*);
int BLASFUNC(izamin)(int*, double*, int*);
int BLASFUNC(ixamin)(int*, double*, int*);

int BLASFUNC(ismin)(int*, float*, int*);
int BLASFUNC(idmin)(int*, double*, int*);
int BLASFUNC(iqmin)(int*, double*, int*);
int BLASFUNC(icmin)(int*, float*, int*);
int BLASFUNC(izmin)(int*, double*, int*);
int BLASFUNC(ixmin)(int*, double*, int*);

float BLASFUNC(samax)(int*, float*, int*);
double BLASFUNC(damax)(int*, double*, int*);
double BLASFUNC(qamax)(int*, double*, int*);
float BLASFUNC(scamax)(int*, float*, int*);
double BLASFUNC(dzamax)(int*, double*, int*);
double BLASFUNC(qxamax)(int*, double*, int*);

float BLASFUNC(samin)(int*, float*, int*);
double BLASFUNC(damin)(int*, double*, int*);
double BLASFUNC(qamin)(int*, double*, int*);
float BLASFUNC(scamin)(int*, float*, int*);
double BLASFUNC(dzamin)(int*, double*, int*);
double BLASFUNC(qxamin)(int*, double*, int*);

float BLASFUNC(smax)(int*, float*, int*);
double BLASFUNC(dmax)(int*, double*, int*);
double BLASFUNC(qmax)(int*, double*, int*);
float BLASFUNC(scmax)(int*, float*, int*);
double BLASFUNC(dzmax)(int*, double*, int*);
double BLASFUNC(qxmax)(int*, double*, int*);

float BLASFUNC(smin)(int*, float*, int*);
double BLASFUNC(dmin)(int*, double*, int*);
double BLASFUNC(qmin)(int*, double*, int*);
float BLASFUNC(scmin)(int*, float*, int*);
double BLASFUNC(dzmin)(int*, double*, int*);
double BLASFUNC(qxmin)(int*, double*, int*);

int BLASFUNC(sscal)(int*, float*, float*, int*);
int BLASFUNC(dscal)(int*, double*, double*, int*);
int BLASFUNC(qscal)(int*, double*, double*, int*);
int BLASFUNC(cscal)(int*, float*, float*, int*);
int BLASFUNC(zscal)(int*, double*, double*, int*);
int BLASFUNC(xscal)(int*, double*, double*, int*);
int BLASFUNC(csscal)(int*, float*, float*, int*);
int BLASFUNC(zdscal)(int*, double*, double*, int*);
int BLASFUNC(xqscal)(int*, double*, double*, int*);

float BLASFUNC(snrm2)(int*, float*, int*);
float BLASFUNC(scnrm2)(int*, float*, int*);

double BLASFUNC(dnrm2)(int*, double*, int*);
double BLASFUNC(qnrm2)(int*, double*, int*);
double BLASFUNC(dznrm2)(int*, double*, int*);
double BLASFUNC(qxnrm2)(int*, double*, int*);

int BLASFUNC(srot)(int*, float*, int*, float*, int*, float*, float*);
int BLASFUNC(drot)(int*, double*, int*, double*, int*, double*, double*);
int BLASFUNC(qrot)(int*, double*, int*, double*, int*, double*, double*);
int BLASFUNC(csrot)(int*, float*, int*, float*, int*, float*, float*);
int BLASFUNC(zdrot)(int*, double*, int*, double*, int*, double*, double*);
int BLASFUNC(xqrot)(int*, double*, int*, double*, int*, double*, double*);

int BLASFUNC(srotg)(float*, float*, float*, float*);
int BLASFUNC(drotg)(double*, double*, double*, double*);
int BLASFUNC(qrotg)(double*, double*, double*, double*);
int BLASFUNC(crotg)(float*, float*, float*, float*);
int BLASFUNC(zrotg)(double*, double*, double*, double*);
int BLASFUNC(xrotg)(double*, double*, double*, double*);

int BLASFUNC(srotmg)(float*, float*, float*, float*, float*);
int BLASFUNC(drotmg)(double*, double*, double*, double*, double*);

int BLASFUNC(srotm)(int*, float*, int*, float*, int*, float*);
int BLASFUNC(drotm)(int*, double*, int*, double*, int*, double*);
int BLASFUNC(qrotm)(int*, double*, int*, double*, int*, double*);

/* Level 2 routines */

int BLASFUNC(sger)(int*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(dger)(int*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(qger)(int*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(cgeru)(int*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(cgerc)(int*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(zgeru)(int*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(zgerc)(int*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(xgeru)(int*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(xgerc)(int*, int*, double*, double*, int*, double*, int*, double*, int*);

int BLASFUNC(sgemv)(char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dgemv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qgemv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(cgemv)(char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zgemv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xgemv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(strsv)(char*, char*, char*, int*, float*, int*, float*, int*);
int BLASFUNC(dtrsv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(qtrsv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(ctrsv)(char*, char*, char*, int*, float*, int*, float*, int*);
int BLASFUNC(ztrsv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(xtrsv)(char*, char*, char*, int*, double*, int*, double*, int*);

int BLASFUNC(stpsv)(char*, char*, char*, int*, float*, float*, int*);
int BLASFUNC(dtpsv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(qtpsv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(ctpsv)(char*, char*, char*, int*, float*, float*, int*);
int BLASFUNC(ztpsv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(xtpsv)(char*, char*, char*, int*, double*, double*, int*);

int BLASFUNC(strmv)(char*, char*, char*, int*, float*, int*, float*, int*);
int BLASFUNC(dtrmv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(qtrmv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(ctrmv)(char*, char*, char*, int*, float*, int*, float*, int*);
int BLASFUNC(ztrmv)(char*, char*, char*, int*, double*, int*, double*, int*);
int BLASFUNC(xtrmv)(char*, char*, char*, int*, double*, int*, double*, int*);

int BLASFUNC(stpmv)(char*, char*, char*, int*, float*, float*, int*);
int BLASFUNC(dtpmv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(qtpmv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(ctpmv)(char*, char*, char*, int*, float*, float*, int*);
int BLASFUNC(ztpmv)(char*, char*, char*, int*, double*, double*, int*);
int BLASFUNC(xtpmv)(char*, char*, char*, int*, double*, double*, int*);

int BLASFUNC(stbmv)(char*, char*, char*, int*, int*, float*, int*, float*, int*);
int BLASFUNC(dtbmv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(qtbmv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(ctbmv)(char*, char*, char*, int*, int*, float*, int*, float*, int*);
int BLASFUNC(ztbmv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(xtbmv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);

int BLASFUNC(stbsv)(char*, char*, char*, int*, int*, float*, int*, float*, int*);
int BLASFUNC(dtbsv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(qtbsv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(ctbsv)(char*, char*, char*, int*, int*, float*, int*, float*, int*);
int BLASFUNC(ztbsv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);
int BLASFUNC(xtbsv)(char*, char*, char*, int*, int*, double*, int*, double*, int*);

int BLASFUNC(ssymv)(char*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dsymv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qsymv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(csymv)(char*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zsymv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xsymv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(sspmv)(char*, int*, float*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(dspmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(qspmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(cspmv)(char*, int*, float*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(zspmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(xspmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);

int BLASFUNC(ssyr)(char*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dsyr)(char*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(qsyr)(char*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(csyr)(char*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(zsyr)(char*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(xsyr)(char*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(ssyr2)(char*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(dsyr2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(qsyr2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(csyr2)(char*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(zsyr2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(xsyr2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);

int BLASFUNC(sspr)(char*, int*, float*, float*, int*, float*);
int BLASFUNC(dspr)(char*, int*, double*, double*, int*, double*);
int BLASFUNC(qspr)(char*, int*, double*, double*, int*, double*);
int BLASFUNC(cspr)(char*, int*, float*, float*, int*, float*);
int BLASFUNC(zspr)(char*, int*, double*, double*, int*, double*);
int BLASFUNC(xspr)(char*, int*, double*, double*, int*, double*);

int BLASFUNC(sspr2)(char*, int*, float*, float*, int*, float*, int*, float*);
int BLASFUNC(dspr2)(char*, int*, double*, double*, int*, double*, int*, double*);
int BLASFUNC(qspr2)(char*, int*, double*, double*, int*, double*, int*, double*);
int BLASFUNC(cspr2)(char*, int*, float*, float*, int*, float*, int*, float*);
int BLASFUNC(zspr2)(char*, int*, double*, double*, int*, double*, int*, double*);
int BLASFUNC(xspr2)(char*, int*, double*, double*, int*, double*, int*, double*);

int BLASFUNC(cher)(char*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(zher)(char*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(xher)(char*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(chpr)(char*, int*, float*, float*, int*, float*);
int BLASFUNC(zhpr)(char*, int*, double*, double*, int*, double*);
int BLASFUNC(xhpr)(char*, int*, double*, double*, int*, double*);

int BLASFUNC(cher2)(char*, int*, float*, float*, int*, float*, int*, float*, int*);
int BLASFUNC(zher2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);
int BLASFUNC(xher2)(char*, int*, double*, double*, int*, double*, int*, double*, int*);

int BLASFUNC(chpr2)(char*, int*, float*, float*, int*, float*, int*, float*);
int BLASFUNC(zhpr2)(char*, int*, double*, double*, int*, double*, int*, double*);
int BLASFUNC(xhpr2)(char*, int*, double*, double*, int*, double*, int*, double*);

int BLASFUNC(chemv)(char*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zhemv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xhemv)(char*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(chpmv)(char*, int*, float*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(zhpmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(xhpmv)(char*, int*, double*, double*, double*, int*, double*, double*, int*);

int BLASFUNC(snorm)(char*, int*, int*, float*, int*);
int BLASFUNC(dnorm)(char*, int*, int*, double*, int*);
int BLASFUNC(cnorm)(char*, int*, int*, float*, int*);
int BLASFUNC(znorm)(char*, int*, int*, double*, int*);

int BLASFUNC(sgbmv)(char*, int*, int*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dgbmv)(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qgbmv)(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(cgbmv)(char*, int*, int*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zgbmv)(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xgbmv)(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(ssbmv)(char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dsbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qsbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(csbmv)(char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zsbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xsbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(chbmv)(char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zhbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xhbmv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

/* Level 3 routines */

int BLASFUNC(sgemm)(char*, char*, int*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dgemm)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qgemm)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(cgemm)(char*, char*, int*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zgemm)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xgemm)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(cgemm3m)(char*, char*, int*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zgemm3m)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xgemm3m)(char*, char*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(sge2mm)(char*, char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dge2mm)(char*, char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(cge2mm)(char*, char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zge2mm)(char*, char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(strsm)(char*, char*, char*, char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dtrsm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(qtrsm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(ctrsm)(char*, char*, char*, char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(ztrsm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(xtrsm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(strmm)(char*, char*, char*, char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dtrmm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(qtrmm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(ctrmm)(char*, char*, char*, char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(ztrmm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(xtrmm)(char*, char*, char*, char*, int*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(ssymm)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dsymm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qsymm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(csymm)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zsymm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xsymm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(csymm3m)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zsymm3m)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xsymm3m)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(ssyrk)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(dsyrk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(qsyrk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(csyrk)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(zsyrk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(xsyrk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);

int BLASFUNC(ssyr2k)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(dsyr2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(qsyr2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(csyr2k)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zsyr2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xsyr2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(chemm)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zhemm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xhemm)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(chemm3m)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zhemm3m)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xhemm3m)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(cherk)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*);
int BLASFUNC(zherk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);
int BLASFUNC(xherk)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*);

int BLASFUNC(cher2k)(char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zher2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xher2k)(char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(cher2m)(char*, char*, char*, int*, int*, float*, float*, int*, float*, int*, float*, float*, int*);
int BLASFUNC(zher2m)(char*, char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);
int BLASFUNC(xher2m)(char*, char*, char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);

int BLASFUNC(sgemt)(char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dgemt)(char*, int*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(cgemt)(char*, int*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(zgemt)(char*, int*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(sgema)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dgema)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(cgema)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(zgema)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(sgems)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(dgems)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*, double*, int*);
int BLASFUNC(cgems)(char*, char*, int*, int*, float*, float*, int*, float*, float*, int*, float*, int*);
int BLASFUNC(zgems)(char*, char*, int*, int*, double*, double*, int*, double*, double*, int*, double*, int*);

int BLASFUNC(sgetf2)(int*, int*, float*, int*, int*, int*);
int BLASFUNC(dgetf2)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(qgetf2)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(cgetf2)(int*, int*, float*, int*, int*, int*);
int BLASFUNC(zgetf2)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(xgetf2)(int*, int*, double*, int*, int*, int*);

int BLASFUNC(sgetrf)(int*, int*, float*, int*, int*, int*);
int BLASFUNC(dgetrf)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(qgetrf)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(cgetrf)(int*, int*, float*, int*, int*, int*);
int BLASFUNC(zgetrf)(int*, int*, double*, int*, int*, int*);
int BLASFUNC(xgetrf)(int*, int*, double*, int*, int*, int*);

int BLASFUNC(slaswp)(int*, float*, int*, int*, int*, int*, int*);
int BLASFUNC(dlaswp)(int*, double*, int*, int*, int*, int*, int*);
int BLASFUNC(qlaswp)(int*, double*, int*, int*, int*, int*, int*);
int BLASFUNC(claswp)(int*, float*, int*, int*, int*, int*, int*);
int BLASFUNC(zlaswp)(int*, double*, int*, int*, int*, int*, int*);
int BLASFUNC(xlaswp)(int*, double*, int*, int*, int*, int*, int*);

int BLASFUNC(sgetrs)(char*, int*, int*, float*, int*, int*, float*, int*, int*);
int BLASFUNC(dgetrs)(char*, int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(qgetrs)(char*, int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(cgetrs)(char*, int*, int*, float*, int*, int*, float*, int*, int*);
int BLASFUNC(zgetrs)(char*, int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(xgetrs)(char*, int*, int*, double*, int*, int*, double*, int*, int*);

int BLASFUNC(sgesv)(int*, int*, float*, int*, int*, float*, int*, int*);
int BLASFUNC(dgesv)(int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(qgesv)(int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(cgesv)(int*, int*, float*, int*, int*, float*, int*, int*);
int BLASFUNC(zgesv)(int*, int*, double*, int*, int*, double*, int*, int*);
int BLASFUNC(xgesv)(int*, int*, double*, int*, int*, double*, int*, int*);

int BLASFUNC(spotf2)(char*, int*, float*, int*, int*);
int BLASFUNC(dpotf2)(char*, int*, double*, int*, int*);
int BLASFUNC(qpotf2)(char*, int*, double*, int*, int*);
int BLASFUNC(cpotf2)(char*, int*, float*, int*, int*);
int BLASFUNC(zpotf2)(char*, int*, double*, int*, int*);
int BLASFUNC(xpotf2)(char*, int*, double*, int*, int*);

int BLASFUNC(spotrf)(char*, int*, float*, int*, int*);
int BLASFUNC(dpotrf)(char*, int*, double*, int*, int*);
int BLASFUNC(qpotrf)(char*, int*, double*, int*, int*);
int BLASFUNC(cpotrf)(char*, int*, float*, int*, int*);
int BLASFUNC(zpotrf)(char*, int*, double*, int*, int*);
int BLASFUNC(xpotrf)(char*, int*, double*, int*, int*);

int BLASFUNC(slauu2)(char*, int*, float*, int*, int*);
int BLASFUNC(dlauu2)(char*, int*, double*, int*, int*);
int BLASFUNC(qlauu2)(char*, int*, double*, int*, int*);
int BLASFUNC(clauu2)(char*, int*, float*, int*, int*);
int BLASFUNC(zlauu2)(char*, int*, double*, int*, int*);
int BLASFUNC(xlauu2)(char*, int*, double*, int*, int*);

int BLASFUNC(slauum)(char*, int*, float*, int*, int*);
int BLASFUNC(dlauum)(char*, int*, double*, int*, int*);
int BLASFUNC(qlauum)(char*, int*, double*, int*, int*);
int BLASFUNC(clauum)(char*, int*, float*, int*, int*);
int BLASFUNC(zlauum)(char*, int*, double*, int*, int*);
int BLASFUNC(xlauum)(char*, int*, double*, int*, int*);

int BLASFUNC(strti2)(char*, char*, int*, float*, int*, int*);
int BLASFUNC(dtrti2)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(qtrti2)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(ctrti2)(char*, char*, int*, float*, int*, int*);
int BLASFUNC(ztrti2)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(xtrti2)(char*, char*, int*, double*, int*, int*);

int BLASFUNC(strtri)(char*, char*, int*, float*, int*, int*);
int BLASFUNC(dtrtri)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(qtrtri)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(ctrtri)(char*, char*, int*, float*, int*, int*);
int BLASFUNC(ztrtri)(char*, char*, int*, double*, int*, int*);
int BLASFUNC(xtrtri)(char*, char*, int*, double*, int*, int*);

int BLASFUNC(spotri)(char*, int*, float*, int*, int*);
int BLASFUNC(dpotri)(char*, int*, double*, int*, int*);
int BLASFUNC(qpotri)(char*, int*, double*, int*, int*);
int BLASFUNC(cpotri)(char*, int*, float*, int*, int*);
int BLASFUNC(zpotri)(char*, int*, double*, int*, int*);
int BLASFUNC(xpotri)(char*, int*, double*, int*, int*);

#endif
